home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / lib / partman / display.d / 10initial_auto < prev    next >
Text File  |  2009-10-28  |  3KB  |  125 lines

  1. #!/bin/sh
  2.  
  3. . /lib/partman/lib/base.sh
  4.  
  5. # Only run the first time
  6. if [ -f /var/lib/partman/initial_auto ]; then
  7.     exit 0
  8. fi
  9.  
  10. . /lib/partman/lib/auto-shared.sh
  11.  
  12. # Skip if no disks detected and don't run on S/390
  13. if [ -z "$(get_auto_disks)" ] || \
  14.    [ "$(udpkg --print-architecture)" = s390 ]; then
  15.     exit 0
  16. fi
  17.  
  18. mkdir -p /var/lib/partman
  19. touch /var/lib/partman/initial_auto
  20.  
  21. # See if any autopartition method has been set
  22. method=""
  23. if db_get partman-auto/method && [ "$RET" ]; then
  24.     method="$RET"
  25. fi
  26.  
  27. # See if any autopartition disks have been set
  28. disks=""
  29. if db_get partman-auto/disk && [ "$RET" ]; then
  30.     disks="$RET"
  31. fi
  32.  
  33. # If there's only one disk, then preseeding partman-auto/disk is
  34. # unnecessary, and sometimes inconvenient in heterogeneous environments
  35. if [ "$method" ] && [ -z "$disks" ]; then
  36.     DEVS="$(get_auto_disks)"
  37.     if [ "$(echo "$DEVS" | wc -l)" -eq 1 ]; then
  38.         disks="$(cat "${DEVS%$TAB*}"/device)"
  39.     fi
  40. fi
  41.  
  42. # If both are set, let's try to do a completely automatic partitioning
  43. if [ "$method" ] && [ "$disks" ]; then
  44.     # The code for the methods could be merged, but in the future non-regular
  45.     # methods may support multiple disks
  46.     case "$method" in
  47.         regular)
  48.         for disk in $disks; do
  49.             id=$(dev_to_partman "$disk") || true
  50.             if [ "$id" ]; then
  51.                 autopartition "$id"
  52.                 exit 0
  53.             fi
  54.         done
  55.         exit 1
  56.         ;;
  57.         lvm)
  58.         search-path autopartition-lvm || exit 1
  59.         ids=""
  60.         for disk in $disks; do
  61.             id=$(dev_to_partman "$disk") || true
  62.             ids="${ids:+$ids }$id"
  63.         done
  64.         if [ "$ids" ]; then
  65.             autopartition-lvm "$ids"
  66.             exit 0
  67.         fi
  68.         exit 1
  69.         ;;
  70.         crypto)
  71.         search-path autopartition-crypto || exit 1
  72.         for disk in $disks; do
  73.             id=$(dev_to_partman "$disk") || true
  74.             if [ "$id" ]; then
  75.                 autopartition-crypto "$id"
  76.                 exit 0
  77.             fi
  78.         done
  79.         exit 1
  80.         ;;
  81.         raid)
  82.         # Partition all the disks given ready for
  83.         # partman-auto-raid
  84.         ids=""
  85.         for disk in $disks; do
  86.             id=$(dev_to_partman "$disk") || true
  87.             ids="${ids:+$ids }$id"
  88.         done
  89.         auto_init_disks $ids || exit $?
  90.         for id in $ids; do
  91.             autopartition "$id"
  92.         done
  93.         exit 0
  94.         ;;
  95.         loop)
  96.         search-path autopartition-loop || exit 1
  97.         for disk in $disks; do
  98.             id=$(dev_to_partman "$disk") || true
  99.             if [ "$id" ]; then
  100.                 autopartition-loop "$id"
  101.                 exit 0
  102.             fi
  103.         done
  104.         exit 1
  105.         ;;
  106.         *)
  107.         logger -t partman-auto "Unsupported method '$method'"
  108.         exit 1
  109.         ;;
  110.     esac
  111. fi
  112.  
  113. qfile=/lib/partman/automatically_partition/question
  114. echo "partman-auto/init_automatically_partition" >$qfile
  115. code=99 # signals a retry
  116. while [ $code = 99 ]; do
  117.     ask_user /lib/partman/automatically_partition
  118.     code=$?
  119. done
  120. if [ $code -gt 0 ] && [ $code -lt 100 ]; then
  121.     rm -f /var/lib/partman/initial_auto # try again
  122. fi
  123. echo "partman-auto/automatically_partition" >$qfile
  124. exit $code
  125.